package bookshare;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Katharina
 */
public class VerkaufenServlet extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    
    public VerkaufenServlet() {
        super();
    }
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        response.setContentType("text/html;charset=UTF-8");

        /*
         * get-Parameter des Artikel-erstellen-Formulars abrufen und Objekte mit
         * diesen Werten erzeugen (speichern)
         */
        HttpSession session = request.getSession(true);
        // UserID abfragen
        int userid = (Integer)session.getAttribute("userID");
        
        try {
            // Parameter für die abstrakte Klasse Artikel auslesen
            String artikeltyp = request.getParameter("Artikeltyp");
            if(artikeltyp == null) {
                response.sendRedirect("index.jsp?param1=verkaufen&error=1");
                return;
            }
            String name = request.getParameter("name");
            // Name darf nicht leer sein
            if(name == null) {
                response.sendRedirect("index.jsp?param1=verkaufen&error=1");
                return;
            }
            String strStartpreis = request.getParameter("startpreis");
            // Startpreis darf nicht leer sein
            if(strStartpreis == null) {
                response.sendRedirect("index.jsp?param1=verkaufen&error=1");
                return;
            }
            float startpreis = Float.parseFloat(strStartpreis);
            if(startpreis <= 0) {
                response.sendRedirect("index.jsp?param1=verkaufen&error=1");
                return;
            }
            String strErscheinungsjahr = request.getParameter("erscheinungsjahr");
            int erscheinungsjahr = 0;
            if(!strErscheinungsjahr.equals(""))
                erscheinungsjahr = Integer.parseInt(strErscheinungsjahr);
            String beschreibung = request.getParameter("beschreibung");
        
            // Artikeltyp-spezifische Parameter auslesen
            if(artikeltyp.equals("buch")) {
                String buchautor = request.getParameter("buchautor");
                if(buchautor == null) {
                    response.sendRedirect("index.jsp?param1=verkaufen&error=1");
                    return;
                }
                String verlag = request.getParameter("verlag");
                String isbn = request.getParameter("isbn");
                String strSeitenanzahl = request.getParameter("seitenanzahl");
                int seitenanzahl = 0;
                Boolean verkauft = false;
                if(!strSeitenanzahl.equals("")) {
                    seitenanzahl = Integer.parseInt(strSeitenanzahl);
                }
                
                Buch buch = new Buch(name, startpreis, erscheinungsjahr, beschreibung, buchautor, verlag, isbn, seitenanzahl, userid, verkauft);
                buch.addBuch();
            }

            else if(artikeltyp.equals("skriptum")) {
                String autor = request.getParameter("skriptautor");
                String fachbereich = request.getParameter("fachbereich");
                if(autor == null || fachbereich == null) {
                    response.sendRedirect("index.jsp?param1=verkaufen&error=1");
                    return;
                }
                Boolean verkauft = false;
                Skript skript = new Skript(name, startpreis, erscheinungsjahr, beschreibung, autor, fachbereich, userid, verkauft);
                skript.addSkript();
            }

            else {
                String entwickler = request.getParameter("entwickler");
                String medium = request.getParameter("medium");
                if(medium == null) {
                    response.sendRedirect("index.jsp?param1=verkaufen&error=1");
                    return;
                }
                Boolean verkauft = false;
                Software software = new Software(name, startpreis, erscheinungsjahr, beschreibung, entwickler, medium, userid, verkauft);
                software.addSoftware();
            }
            response.sendRedirect("index.jsp?param1=verkaufen&param2=success");
        } catch (Exception e) {
            response.sendRedirect("index.jsp?param1=verkaufen&error=2");
        }
    }
}